// JavaScript Document
function myScroll() {
    //1.优先 pageX。要判断一下能不能使用
    if (window.pageXOffset != null) { //ie9 +
        //可以使用
        return {"left": window.pageXOffset, "top": window.pageYOffset};
    }

    if (document.compatMode === "CSS1Compat") {
        //判断一下是否是标准的DTD模式 DTD 文档类型定义
        return {
            "left": document.documentElement.scrollLeft,
            "top": document.documentElement.scrollTop
        }
    }

    return {
        "left": document.body.scrollLeft,
        "top": document.body.scrollTop
    }
}


function subChild(id){  //获取元素子节点
var arr=[];   //接收的容器
var oUl=document.getElementById(id); //子元素的父级
for(var i=0; i<oUl.childNodes.length;i++){
	if(oUl.childNodes[i].nodeType==1){ //如果是元素节点
		
		arr.push(oUl.childNodes[i]); 
		}
	
}		
		
	return arr;  //返回arr
	
	}

function getElementByClassName(parent,tagname,className){ //通过class获取到元素
var iEms=parent.getElementsByTagName(tagname); 	
var arr=[];
	for(var i=0; i<iEms.length;i++){
		var aClassName=iEms[i].className.split(' ');	
            for(var j=0;j<aClassName.length;j++){
				if(aClassName[j]==className){
					arr.push(iEms[i]);
					break;
					}
				
				}
		
		}
	
return arr;	
	
	
};

function  addClassName(obj,className){  //添加class
	if(!obj.className==''){
	     var aClassName=obj.className.split(' ');
		 var _index=indexof(aClassName,className);
		 if(_index==-1){
			 obj.className +=' '+className;
			 }
		}else{
			
			obj.className==className;
			}
	
	
	
};

function removeClass(obj,className){  //移除class
	if(!obj.className==''){
		 var aClassName=obj.className.split(' ');
		 var _index=indexof(aClassName,className);
		 if(_index!=-1)aClassName.splice(_index,1);
		obj.className=aClassName.join(' ');
		}
};


function indexof(arr,tag){    //indexOf
for(var i=0; i<arr.length; i++){
	if(arr[i]==tag)return i;	
		
}
	return -1;
};


function insertafter(parent,index,tagName){  //在某某元素前面插入元素
	
var iEs=parent.children[index+1]
	parent.insertBefore(tagName,iEs);
};

function removechild(parent,index){   //删除子节点   
	var iEs=parent.children[index];
	parent.removeChild(iEs);
	
	};
function getStyle(obj,attr){           //获取元素样式的函数
	return obj.currentStyle?obj.currentStyle[attr]:getComputedStyle(obj)[attr];
	
};

function doMove(obj,attr,dir,target,endFn){      //简单属性动画的函数
	dir=parseInt(getStyle(obj,attr))<target?dir:-dir;
	clearInterval(obj.timer);
	obj.timer=setInterval(function(){
	var speed=parseInt(getStyle(obj,attr))+dir; 
	if(speed>target&&dir>0||speed<target&&dir<0){
		              speed=target;
					  }		  
	obj.style[attr]=speed+'px';
	if(speed==target){
		
	clearInterval(obj.timer);
	//console.log('0')
	endFn&&endFn();
	
	}
	
	},30);
	};
function setcookie(key,value,t){   //设置cookie
var oDate=new Date();	
 oDate.setDate(oDate.getDate()+t)
document.cookie=key+'='+value+';'+';expires='+oDate.toGMTString();
	
};
function removecookie(key){     //删除cookie
	setcookie(key,'',-1);
	}


/**
 *
 * @param {string} key 
 * @returns {string}
 */

function getcookie(key){        //获取cookie
	var arr=document.cookie.split('; ');
	for(var i=0; i<arr.length;i++){
		var arr1=arr[i].split('=');
		if(arr1[0]==key){
			
			return decodeURI(arr1[1]);
			}
		}
	
	};	


function getCookie(){   //获取所有的cooker
	obj={};
	var str=document.cookie;
	if(str.indexOf(';')==-1){
		var arr=str.split('=');
		obj[arr[0]]=arr[1];
		}else{
			var arr=str.split('; ');
			for(var i=0; i<arr.length; i++){
				var arr1=arr[i].split('=');
				
				obj[arr1[0]]=arr1[1];
				
				}
			}
	
	
	return obj;
	};

function getonecookie(key){ 

   //获取一个cookie
   
   if(Boolean(getcookie()[key])){
	   
	   return getcookie()[key]
	   
  }
	return '你输入的东西不存在'
	
	};

function shake(obj,endFn){   //一个抖动的函数
	if(obj.onOff){ return false;} //开始自定义属性未定义为false
	obj.onOff=true;                //设置并赋值
clearInterval(obj.timer);	
var pos=parseInt(getStyle(obj,'left'));	
var num=0;
var arr=[];	
for(var i=20;i>0;i-=2){
arr.push(i,-i);
}	
arr.push(0);
obj.timer=setInterval(function(){
obj.style.left=pos+arr[num]+'px';	
	if(num==arr.length){
		obj.onOff=false;           //完成整个过程  还原开关
		clearInterval(obj.timer);
		}
	num++;
	endFn&&endFn();	
},50);


};
//48-57 97-122a 65-90A
function numFour(n){    //随机4个数字加字母
var arr=[];
var str='';
for(var i=0; i<5; i++){
var num=Math.round(Math.random()*100);	
if(num>48&&num<57||num>65&&num<90){
	arr.push(num);
	}else{
		i--;
		}	
}
for(var i=0; i<arr.length;i++){
	if(arr[i]<57){
		break;
		}
	if(i==arr.length-1){
		return numFour(n);
		}
	}
for(var i=0; i<arr.length;i++){
	if(arr[i]>65){
		break;
		}
	if(i==arr.length-1){
		return numFour(n);
		}
	}
for(var i=0; i<arr.length;i++){
	str+=String.fromCharCode(arr[i]);
	}

return str;	
};

function scrWel(evt){   //鼠标滚轮的处理函数向上滚true  向下滚false;
	var oEvent=evt||window.event;
	
	if(oEvent.wheelDelta){
	return oEvent.wheelDelta>0?true :false;
	}else{
		
	 return oEvent.detail<0?true :false;
		}
	
	}

function animate(obj,json,fn) {     
    // 第一参数 动的对象   2  attr  动的那个属性   3   属性值少多少
    clearInterval(obj.timer);
    obj.timer = setInterval(function() {
        var flag = true;  //  用来判断是否停止定时器   定时器的里面
        //  每隔 30 毫秒就要运行一次
        for(var k in json) {  // k 属性     json[k] 是属性值
            // 第一 k 是 width
            // 第二 k     height
            //  leader  =  600 -  100
            // leader = leader + (target - leader )  /10 ;
            //  计算步长
            // target 目标位置    leader 不清楚，我们不知道用户改那个属性
            // 检测用户给我们了什么属性，  我们就用这个属性的值 来计算
            // 我们怎么知道用户给我们属性，我们怎么又能得到属性的值呢？
            //  var leader = obj.style[attr];  他只能得到行内式
            var leader = 0;
            // 因为透明度是 小数   取值 0~1 之间    第二个  它没有单位
            if(k == "opacity") {                        //透明度取1-100
                // 先解决小数的问题
                leader =  Math.round(getStyle(obj,k) * 100) || 100;
                // 如果没有opacity  默认当 1 看    1* 100  = 100
                // 我们去过来的是  0.3  但是小数不好计算 我们乘以100   30  好计算
            }
            else {
                leader = parseInt(getStyle(obj,k)) || 0;
                // 他本身有单位 所以要去掉    默认的默认是 0
            }
            //去掉px 的方法   parseInt(25px)   25
            /* alert(leader);*/
            var step = (json[k] - leader) / 10;
            step = step > 0 ? Math.ceil(step) : Math.floor(step);
            leader = leader + step;
            if( k == "opacity") {   // 记住我们的透明是不加单位的  不要加px
                obj.style.opacity = leader / 100;
//                    opacity: 0.4;
//                    filter: alpha(opacity = 40);     /*不能改只能是 40  不能是 0.4*/
                obj.style.filter = "alpha(opacity = "+leader+")";
            }
            // 设置层级
            else if(k == "zIndex") {
                obj.style.zIndex = json[k];    //  直接给值
            }
            else {
                obj.style[k] = leader + "px";   // 其他的要单位
            }
            if(leader != json[k]) {  //  只要三个属性有一个没有到达，我就取反
                // 这句话要写到 for in 里面   因为有三个属性，所以用 for in 才能遍历
                // 三个都到了 都不执行这句话了
                flag = false;
            }
        }
        // console.log(flag);
        if(flag) {
            clearInterval(obj.timer);
            if(fn){   // 如果有函数传递过来  ， 定时器结束了，说明动画结束  可以执行 回调函数
                fn();   // 执行函数  fn + ();
            }
        }
    },30)
}
function scrWel(evt){   //鼠标滚轮的处理函数向上滚true  向下滚false;
	var oEvent=evt||window.event;
	
	if(oEvent.wheelDelta){
	return oEvent.wheelDelta>0?true :false;
	}else{
		
	 return oEvent.detail<0?true :false;
		}
	
	}



function ajax(json) {
    var xhr =new createXHR();// 创建核心对象


    //如果用户没有指定是同步还是异步，默认为同步
    if(json.async==undefined){
        json.async=true;  // 异步
    }

    if(json.type=="get"){
        //我们就让 url地址传值
        //http://xxxx.com?uname=周杰&pwd=123
        xhr.open(json.type,json.url+"?"+param(json.data),json.async);
        xhr.send(null);
    }else{
        //否则就请求体传值  post 不需要url地址传值

        xhr.open(json.type,json.url,json.async);
        //如果是post请求，必须加上这样的一句话，在请求头，模拟表单的格式。
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
        xhr.send(param(json.data))
    }

    //2.同步与异步的处理
    if(json.async==false){
        // 同步
        if(xhr.status==200){
            var result="error";  //用于接受结果
            // 返回到浏览的数据格式
            if(json.dataType=="json"){
                result= JSON.parse(xhr.responseText)
            }else if(json.dataType=="text"){
                result=xhr.responseText
            }else if(json.dataType=="xml"){
                result=xhr.responseXML
            }else{
                //默认返回json格式
                result= JSON.parse(xhr.responseText)
            }
            if(json.success){
                json.success(result);// 最后把结果返回出去。利用回调函数
            }
        }

    }else{
        //异步
        xhr.onreadystatechange=function () {
            if(xhr.readyState==4){
                if(xhr.status==200){
                    var result="error";  //用于接受结果
                    // 返回到浏览的数据格式
                    if(json.dataType=="json"){
                        result= JSON.parse(xhr.responseText)
                    }else if(json.dataType=="text"){
                        result=  xhr.responseText
                    }else if(json.dataType=="xml"){
                        result=  xhr.responseXML
                    }else{
                        //默认返回json格式
                        result= JSON.parse(xhr.responseText)
                    }
                    if(json.success){
                        json.success(result);// 最后把结果返回出去。利用回调函数
                    }
                }

            }
        }

    }

}


function param(obj){  //Ajax字符串拼接
	var str="";
	for(var key in obj){
		str+=key+"="+obj[key]+"&"
	}
	
	return str;
};
function createXHR(){ //兼容Ajax的方法
	if(window.XMLHttpRequest){
		return new XMLHttpRequest();
	}
	return new ActiveXObject("Microsoft.XMLHTTP");//兼容IE6
};
//拖拽
function move(obj1,obj2){//点击obj1去移动父盒子obj2
    obj1.onmousedown=function(evt){//obj1点击的盒子
        var e=evt||window.event
        var a=e.clientX-obj2.offsetLeft//obj2移动的盒子
        var b=e.clientY-obj2.offsetTop
        document.onmousemove=function(evt){
            var eEvent=evt||window.event
            obj2.style.left=eEvent.clientX-a+"px";
            obj2.style.top=eEvent.clientY-b+"px"
        }
        document.onmouseup=function(){
            document.onmousemove=null
            document.onmouseup=null
        }
    }

}

